package com.java.blocking_queue;

import java.util.concurrent.BlockingQueue;

/**
 * 生产者：向阻塞队列中存数据
 */
public class Producer extends Thread {
    // 生产者和消费者的阻塞队列必须是同一条
    private BlockingQueue<String> blockingQueue;

    public Producer(BlockingQueue blockingQueue) {
        this.blockingQueue = blockingQueue;
    }

    @Override
    public void run() {
        while (true) {
            try {
                blockingQueue.put("生产者生产的数据存于阻塞队列");
                // 此处打印可能会存在多线程安全问题，因为锁是加载put内部的。打印的目的是为了看效果，实际是没问题的
                System.out.println("生产者生产，数据数量为" + blockingQueue.size());
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
